package com.ssy.lingxi.platform.manage.service.content;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.model.vo.PageVO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.platform.manage.entity.content.ContentInformation;
import com.ssy.lingxi.platform.manage.model.request.common.*;
import com.ssy.lingxi.platform.manage.model.request.content.*;
import com.ssy.lingxi.platform.manage.model.response.*;

import java.util.List;

/**
 * 资讯管理 - 业务处理层
 * @author fhj
 * @version 2.0.0
 * @date 2020/9/17
 */
public interface IContentInformationService {

    Wrapper<PageData<ContentInformationPageResponse>> page(ContentInformationPageRequest request);

    Wrapper<ContentInformation> get(CommonIdRequest request);

    Wrapper<Void> add(ContentInformationRequest request, UserLoginCacheDTO user);

    Wrapper<Void> update(ContentInformationRequest request, UserLoginCacheDTO user);

    Wrapper<Void> updateStatus(CommonStatusRequest request, UserLoginCacheDTO user);

    Wrapper<Void> delete(CommonIdRequest request, UserLoginCacheDTO user);

    Wrapper<Void> batch(ContentInformationBatchRequest request, UserLoginCacheDTO user);

    Wrapper<List<ContentInformationResponse>> findAllByRecommendLabel(RecommendLabelRequest request);

    Wrapper<List<ContentInformationResponse>> latest();

    Wrapper<List<ContentInformationResponse>> maximumRead();

    Wrapper<List<ContentInformationResponse>> maximumCollect();

    Wrapper<List<InformationColumnResponse>> findAllByCategory(CommonIdRequest request);

    Wrapper<PageData<ContentInformationResponse>> pageByColumnLabel(CommonIdPageRequest request);

    Wrapper<List<InformationColumnResponse>> informationColumn();

    Wrapper<PageData<ContentInformationResponse>> search(ContentInformationSearchRequest request);

    Wrapper<ContentInformationResponse> findById(CommonIdRequest request, UserLoginCacheDTO user);

    Wrapper<List<ContentInformationListResponse>> findByIdIn(CommonIdListRequest request);

    Wrapper<List<ContentInformationResponse>> related(CommonIdRequest request);

    Wrapper<Void> collect(CollectRequest request, UserLoginCacheDTO user);

    Wrapper<PageData<ContentInformationResponse>> collectList(PageVO request, UserLoginCacheDTO user);

    Wrapper<PageData<ContentInformationListAdornResponse>> listAdorn(ContentInformationListAdornRequest request);


    Wrapper<PageData<ContentInformationResponse>> pageByIdNotIn(CommonIdListPageRequest request);

    Wrapper<PageData<ContentInformationResponse>> pageByIdIn(CommonIdListPageRequest request);
}
